package com.ww.java8.datetime;

import java.time.Duration;
import java.time.Instant;
import java.util.concurrent.TimeUnit;

/**
 * Instant对象用作时间戳
 * <p>
 * Duration表示两个时刻之间的时间量，可以通过调用toNanos、toMillis、getSeconds、toMinutes、toHours和toDays来获得
 * Duration按照传统单位度量的时间长度
 *
 * @author wgw
 */
public class InstantDemo {

    public static void main(String[] args) {
        // 使用静态方法Instant.now()返回当前的时间戳
        Instant start = Instant.now();
        try {
            TimeUnit.SECONDS.sleep(5);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        Instant end = Instant.now();
        Duration timeElapsed = Duration.between(start, end);
        long ms = timeElapsed.toMillis();
        System.out.println("耗时" + ms + "毫秒");

        Instant start2 = Instant.now();
        try {
            TimeUnit.SECONDS.sleep(15);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        Instant end2 = Instant.now();
        Duration timeElapsed2 = Duration.between(start2, end2);
        System.out.printf("第二次运行耗时%d毫秒\n", timeElapsed2.toMillis());
        boolean overTenTimes = timeElapsed.multipliedBy(3).minus(timeElapsed2).isNegative();
        System.out.printf("第一次是否比第二次快3倍%s", overTenTimes ? "yes" : "no");
    }


    static void test01() {
        // 1.方法plus，minus：Instant或Duration加上或减去一个Duration
        // 2.方法plusNanos，plusMillis，plusSeconds，minusNanos，minusMillis，minusSeconds：Instant或Duration加上或减去给定时间单位的数值
        // 3.方法plusMinutes，plusHous，plusDays，minusMinutes，minusHours，minusDays：Duration加上或减去给定时间单位的数值
        // 4.方法multipliedBy，divideBy，negated：返回由当前的Duration乘以或除以给定long或-1而得到的Duration。注意可以缩放Duration，
        // 不能缩放Instant
        // 5.方法isZero，isNegative：检查当前的Duration是否是0或负值
        // Instant、Duration类都是不可修改的类
    }
}





















































